Skip to content

Remove unused DataStax Astra support - #1034

Open
dkropachev wants to merge 3 commits into
scylla-4.xfrom
cleanup/1026-remove-astra
Open

dkropachev wants to merge 3 commits into
scylla-4.xfrom
cleanup/1026-remove-astra

Conversation

@dkropachev

Copy link
Copy Markdown

Closes #1026. Part of #1025.

What and why

Remove DataStax Astra secure-connect-bundle parsing, topology/SNI routing, public configuration, examples, and tests. ScyllaDB does not use or test this path, so deleting it reduces unverified production and test code that the team must support.

Scylla client routes/private-endpoint support is preserved.

Validation

  • mvn -pl core clean test — 3,955 unit tests and 76 Reactive Streams TCK checks passed.
  • mvn -pl core -DskipTests verify
  • mvn -pl examples -DskipTests package
  • Full fast reactor compiled through integration and OSGi modules; its distribution assembly then hit the existing -Pfast/missing-sources incompatibility.

Dependencies: none. Cherry-picked commits: none.

@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: QUIET

Plan: Advanced

Run ID: c87a7776-056f-4a1c-bf04-76406ad0b17c

📥 Commits

Reviewing files that changed from the base of the PR and between cca0952 and 4a44271.

📒 Files selected for processing (18)
  • core/pom.xml
  • core/src/main/java/com/datastax/oss/driver/internal/core/channel/ChannelFactory.java
  • core/src/main/java/com/datastax/oss/driver/internal/core/channel/DriverChannel.java
  • core/src/main/java/com/datastax/oss/driver/internal/core/channel/ProtocolInitHandler.java
  • core/src/main/resources/reference.conf
  • core/src/test/java/com/datastax/oss/driver/api/core/data/CqlVectorTest.java
  • core/src/test/java/com/datastax/oss/driver/internal/core/channel/ChannelFactoryClusterNameTest.java
  • core/src/test/java/com/datastax/oss/driver/internal/core/channel/ChannelFactorySupportedOptionsTest.java
  • core/src/test/java/com/datastax/oss/driver/internal/core/channel/ChannelFactoryTestBase.java
  • core/src/test/java/com/datastax/oss/driver/internal/core/channel/ProtocolInitHandlerTest.java
  • core/src/test/java/com/datastax/oss/driver/internal/core/context/ClientRoutesConfigFromFileTest.java
  • core/src/test/java/com/datastax/oss/driver/internal/core/metadata/DefaultTopologyMonitorTest.java
  • core/src/test/java/com/datastax/oss/driver/internal/core/metadata/schema/TableMetadataTest.java
  • core/src/test/java/com/datastax/oss/driver/internal/core/metrics/DefaultMetricIdTest.java
  • core/src/test/java/com/datastax/oss/driver/internal/core/metrics/TaggingMetricIdGeneratorTest.java
  • core/src/test/java/com/datastax/oss/driver/internal/core/protocol/BytesToSegmentDecoderTest.java
  • pom.xml
  • upgrade_guide/README.md
💤 Files with no reviewable changes (4)
  • core/pom.xml
  • core/src/main/java/com/datastax/oss/driver/internal/core/channel/DriverChannel.java
  • core/src/main/java/com/datastax/oss/driver/internal/core/channel/ChannelFactory.java
  • core/src/main/resources/reference.conf

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The change removes DataStax Astra secure-connect-bundle and cloud proxy APIs, configuration, runtime handling, SNI support, tests, and dependencies. Client-routes handling remains and no longer conflicts with secure-connect bundles. Protocol option tests now validate ProtocolFeatureStore behavior. Supporting documentation and examples are updated.

Priority: ➖ Normal

Merge Risk: ⚪ Minimal · up to 4a442

This removes Astra secure-connect-bundle support while retaining Scylla client-routes support. The documented validation and focused coverage indicate no remaining merge-blocking risk.

🚥 Pre-merge checks | ✅ 2 | ❌ 3

❌ Failed checks (2 warnings, 1 inconclusive)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The pull request includes changes unrelated to [#1026], including KillrVideo example content and URL changes, CqlVector test decoding changes, shaded Guava import changes, and channel-option/protocol-… Remove the unrelated changes or move them to separate pull requests. Retain only changes required for Astra support removal and directly necessary dependency or test updates.
Docstring Coverage ⚠️ Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 18 functions across 13 files. (1 skipped:… Write docstrings for the functions missing them to satisfy the coverage threshold.
Linked Issues check ❓ Inconclusive Most [#1026] requirements are addressed. The changes remove Astra bundle parsing, SNI and cloud topology support, public APIs, examples, tests, fixtures, documentation, and cloud-specific runtime beha… Confirm whether Astra native-image or build entries exist. Remove them if they exist, or document that no such entries are present. Add validation for this requirement if needed.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the primary change: removal of unused DataStax Astra support.
Description check ✅ Passed The description directly explains the Astra support removal, preserved Scylla client-routes support, and validation results.
Full details: Linked Issues check

Explanation

Most [#1026] requirements are addressed. The changes remove Astra bundle parsing, SNI and cloud topology support, public APIs, examples, tests, fixtures, documentation, and cloud-specific runtime behavior. Client-routes support remains. The supplied change summary does not show removal of native-image or build entries listed in the issue scope.

Full details: Out of Scope Changes check

Explanation

The pull request includes changes unrelated to [#1026], including KillrVideo example content and URL changes, CqlVector test decoding changes, shaded Guava import changes, and channel-option/protocol-storage cleanup.

Full details: Docstring Coverage

Explanation

Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 18 functions across 13 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nikagra nikagra left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two leftovers that have no line in the diff to anchor to:

  • [Minor] 🟡 TypesafeDriverConfig.overrideDefaults() loses its only production caller here. git grep overrideDefaults now matches just the declaration and TypeSafeDriverConfigOverrideDefaultsTest — ~60 lines of mechanism plus a 150-line test go dead, yet applyDefaultOverrides() still runs on every reload().
  • [Nit] 🟢 W3CContextRequestIdGenerator(String payloadKey) was added for the Astra traceparent default; after this PR its only caller is RequestIdGeneratorTest:77. The config-driven path uses the DriverContext ctor and the interface default key.

Comment thread core/src/main/resources/reference.conf
Comment thread core/src/main/resources/reference.conf
Comment thread upgrade_guide/README.md
Comment thread changelog/README.md Outdated
Comment thread pom.xml Outdated
Comment thread core/pom.xml Outdated
@dkropachev

Copy link
Copy Markdown
Author

Follow-up on the two unanchored review notes:

  • Keeping TypesafeDriverConfig.overrideDefaults() and its reload integration. It is generic configuration-default override machinery rather than Astra-specific runtime code; removing the mechanism and its coverage would broaden Remove DataStax Astra secure-connect-bundle support #1026 beyond the secure-bundle cleanup.
  • Keeping W3CContextRequestIdGenerator(String). It remains a general constructor for choosing a custom payload key. Zero repository production callers is not sufficient reason to remove another callable constructor in this compatibility-breaking PR.

Both are intentionally unchanged; the Astra-specific caller and ASTRA_PAYLOAD_KEY are still removed.

@dkropachev
dkropachev requested review from nikagra and a balanced review from Copilot September 2, 2026 11:57

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

Validation passed and no unresolved review issues remain.

Pull request overview

Removes unsupported DataStax Astra secure-connect-bundle functionality while preserving ScyllaDB client-routes/private-endpoint support.

Changes:

  • Removes Astra APIs, configuration, SNI routing, examples, fixtures, and tests.
  • Removes WireMock and replaces transitive test utilities.
  • Updates channel tests, documentation, and migration guidance.
File summaries
File Description
upgrade_guide/README.md Documents the breaking removal.
pom.xml Removes WireMock dependency management.
manual/core/address_resolution/README.md Updates client-routes guidance.
integration-tests/src/test/java/com/datastax/oss/driver/api/core/cloud/SniProxyServer.java Removes the Astra proxy fixture.
integration-tests/src/test/java/com/datastax/oss/driver/api/core/cloud/SniProxyRule.java Removes the Astra proxy rule.
integration-tests/src/test/java/com/datastax/oss/driver/api/core/cloud/CloudIT.java Removes Astra integration tests.
integration-tests/pom.xml Removes the WireMock dependency.
examples/src/main/java/com/datastax/oss/driver/examples/mapper/KillrVideoMapperExample.java Replaces Astra-specific content.
examples/src/main/java/com/datastax/oss/driver/examples/astra/AstraReadCassandraVersion.java Removes the Astra example.
core/src/test/resources/config/cloud/metadata.json Removes the cloud fixture.
core/src/test/java/com/datastax/oss/driver/internal/core/protocol/BytesToSegmentDecoderTest.java Uses shaded Guava.
core/src/test/java/com/datastax/oss/driver/internal/core/metrics/TaggingMetricIdGeneratorTest.java Uses shaded Guava.
core/src/test/java/com/datastax/oss/driver/internal/core/metrics/DefaultMetricIdTest.java Uses shaded Guava.
core/src/test/java/com/datastax/oss/driver/internal/core/metadata/schema/TableMetadataTest.java Uses shaded Guava.
core/src/test/java/com/datastax/oss/driver/internal/core/metadata/DefaultTopologyMonitorTest.java Uses shaded Guava.
core/src/test/java/com/datastax/oss/driver/internal/core/context/DefaultDriverConfigReporterTest.java Removes SNI assertions.
core/src/test/java/com/datastax/oss/driver/internal/core/context/ClientRoutesConfigFromFileTest.java Removes the obsolete bundle conflict test.
core/src/test/java/com/datastax/oss/driver/internal/core/config/cloud/CloudConfigFactoryTest.java Removes bundle parsing tests.
core/src/test/java/com/datastax/oss/driver/internal/core/channel/ChannelFactoryTestBase.java Preserves OPTIONS negotiation.
core/src/test/java/com/datastax/oss/driver/internal/core/channel/ChannelFactorySupportedOptionsTest.java Tests OPTIONS negotiation on every channel.
core/src/test/java/com/datastax/oss/driver/internal/core/channel/ChannelFactoryClusterNameTest.java Updates channel initialization expectations.
core/src/test/java/com/datastax/oss/driver/api/core/data/CqlVectorTest.java Replaces a transitive codec utility.
core/src/main/resources/reference.conf Removes cloud configuration.
core/src/main/java/com/datastax/oss/driver/internal/core/ssl/SniSslEngineFactory.java Removes Astra SNI TLS support.
core/src/main/java/com/datastax/oss/driver/internal/core/metadata/SniEndPoint.java Removes the SNI endpoint implementation.
core/src/main/java/com/datastax/oss/driver/internal/core/metadata/CloudTopologyMonitor.java Removes cloud topology handling.
core/src/main/java/com/datastax/oss/driver/internal/core/context/DefaultDriverContext.java Removes cloud monitor selection.
core/src/main/java/com/datastax/oss/driver/internal/core/context/DefaultDriverConfigReporter.java Removes SNI reporting logic.
core/src/main/java/com/datastax/oss/driver/internal/core/config/cloud/CloudConfigFactory.java Removes bundle parsing.
core/src/main/java/com/datastax/oss/driver/internal/core/config/cloud/CloudConfig.java Removes the cloud configuration model.
core/src/main/java/com/datastax/oss/driver/internal/core/channel/ChannelFactory.java Removes Astra product handling.
core/src/main/java/com/datastax/oss/driver/api/core/session/SessionBuilder.java Removes secure-bundle APIs.
core/src/main/java/com/datastax/oss/driver/api/core/session/ProgrammaticArguments.java Removes cloud proxy arguments.
core/src/main/java/com/datastax/oss/driver/api/core/config/TypedDriverOption.java Removes the typed cloud option.
core/src/main/java/com/datastax/oss/driver/api/core/config/DefaultDriverOption.java Removes the cloud option definition.
core/pom.xml Removes the core WireMock dependency.
Review details
  • Files reviewed: 36/39 changed files
  • Comments generated: 0
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@nikagra

nikagra commented Sep 3, 2026

Copy link
Copy Markdown

Cleanup left over from the Astra removal — none block this PR, no correctness bugs found, but worth a follow-up:

[Minor] 🟡 TypesafeDriverConfig.java:196 — the default-override subsystem (overrideDefaults(), applyDefaultOverrides(), defaultOverrides map, DEFAULT_OVERRIDES_ORIGIN, isDefault()) has no remaining callers now that ChannelFactory's Astra product-type detection is gone. reload() still iterates a permanently-empty map on every config reload, and TypeSafeDriverConfigOverrideDefaultsTest keeps testing it.

[Minor] 🟡 DriverChannel.java:184OPTIONS_KEY/getOptions() lost their only production reader (the deleted product-type check). ProtocolInitHandler still stashes the SUPPORTED-options map into every channel's Netty attribute for nothing now.

[Minor] 🟡 ProgrammaticArguments.java:319clearDatacenters() was added for the secure-connect-bundle mutual-exclusivity check this PR deletes. No remaining callers anywhere in the tree; orphaned public API on Builder.

[Nit] 🟢 EndPoint.java:30 — javadoc still uses SNI routing as the example for a non-default EndPoint. SniEndPoint/SniSslEngineFactory are gone, and the only remaining implementation (ClientRoutesEndPoint) doesn't use SNI server names.

[Nit] 🟢 ChannelFactoryClusterNameTest.java:76 — hand-copies completeSimpleChannelInit()'s SUPPORTED-frame sequence instead of reusing it (already shared by ChannelFactoryProtocolNegotiationTest/ChannelFactoryAvailableIdsTest). Same duplication in ChannelFactorySupportedOptionsTest.

[Nit] 🟢 ClientRoutesConfigFromFileTest.java:73 — the two-arg contextFromHocon() overload only had one caller (should_throw_when_secure_connect_bundle_and_client_routes_both_configured), which this PR removes. Could collapse to a single method now.

@dkropachev
dkropachev force-pushed the cleanup/1026-remove-astra branch from d16e315 to 4a44271 Compare September 9, 2026 18:58
@dkropachev

Copy link
Copy Markdown
Author

Thanks. I addressed the actionable internal/test cleanup in 4a44271b4b:

  • Removed DriverChannel.OPTIONS_KEY/getOptions() and stopped retaining the raw SUPPORTED map. The OPTIONS exchange remains because it feeds ProtocolFeatureStore for Scylla feature negotiation.
  • Updated the channel tests to reuse completeSimpleChannelInit().
  • Collapsed ClientRoutesConfigFromFileTest to one contextFromHocon(String) helper.

I’m intentionally retaining the other items:

  • overrideDefaults() is generic configuration machinery; removing it should be a separate cleanup under [Epic] Remove unused DataStax-only code from the 4.x driver #1025.
  • clearDatacenters() is generic public API available to custom SessionBuilder subclasses, so removing it would add an unrelated compatibility break.
  • The EndPoint SNI example remains valid for custom EndPoint/SslEngineFactory implementations; it isn’t specific to the removed Astra implementations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove DataStax Astra secure-connect-bundle support

3 participants